function x = SelectKElite(k, size, pop)
    global u PRECISION;
    %devuelve los k mejores
    candidatos = u(1:k); %aca van a quedar los k mejores
    cand_idx = 1:k; %los indices de los k mejores
    [min_max min_max_idx] = min(candidatos); %el peor  de los mejores
                                            %el indice del peor de los
                                            %mejores
    %calculo las k mejores aptitudes, con el indice del individuo que
    %tiene esa aptitud
    for i=k+1:size
        if(u(i) > min_max)
            %borrar el min_max y reemplazarlo por el actual mejor
            candidatos(min_max_idx) = u(i);
            cand_idx(min_max_idx) = i;
            %recalcular el minimo de los maximos
            [min_max min_max_idx]= min(candidatos); 
        end
    end

    x = zeros(k, PRECISION);
    %copio los k mejores individuos en x (que es lo que se retorna)  
    for i=1:k
        x(i,:) = pop(cand_idx(i),:);
    end
